package task

import (
	"EasyReson/global"
	"EasyReson/sqls"
	"sync"
)
/**
	任务执行单元载体
 */
func RunTask(task *global.Task){

	db1Src:= task.Db1Src
	db1 := sqls.NewDb(task,db1Src.UserName,db1Src.PassWord,db1Src.Ip,db1Src.Port,db1Src.Database,
		db1Src.CharacterEncoding,db1Src.MaxOpenConns,db1Src.MaxIdleConns)

	db2Src:= task.Db2Src
	db2 := sqls.NewDb(task,db2Src.UserName,db2Src.PassWord,db2Src.Ip,db2Src.Port,db2Src.Database,
		db2Src.CharacterEncoding,db2Src.MaxOpenConns,db2Src.MaxIdleConns)

	dbDestConfig:= task.DBDest
	dbDest := sqls.NewDb(task,dbDestConfig.UserName,dbDestConfig.PassWord,dbDestConfig.Ip,dbDestConfig.Port,dbDestConfig.Database,
		dbDestConfig.CharacterEncoding,dbDestConfig.MaxOpenConns,dbDestConfig.MaxIdleConns)

	taskUint := &UnitTask{db1,
							  db2,
							  dbDest,
							  nil,
							  nil,
							  nil,
							  task,false,new(sync.Mutex),false}
	if "" != task.Cron{
		cronTask(taskUint)
	}
	//将任务注册到定时任务队列中，方便zk进行定时任务远程管理。
	QueueManager.RegistTask(taskUint)
}
